/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package imcda.dbconnection;

import imcda.models.Imc;
import java.sql.*;
import imcda.models.Pessoa;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author Maria
 */
public class PessoaDAO {

    public int insertPessoa(Pessoa p) {
        Conecta c = new Conecta();
        ResultSet rs;
        String sql = "INSERT INTO IMC.PESSOA (NOME) VALUES ('" + p.getNome() + "')";
        try {
            c.getStm().execute(sql);
            sql = "SELECT MAX(CODIGO) FROM IMC.PESSOA";
            rs = c.getStm().executeQuery(sql);
            rs.next();
            return rs.getInt(1);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.toString());
            return -1;
        } finally {
            c.fechaConexao();
        }
    }

    public boolean deletePessoa(int codigo) {
        Conecta c = new Conecta();
        String sql = "DELETE FROM IMC.PESSOA WHERE CODIGO = " + String.valueOf(codigo);
        try {
            c.getStm().execute(sql);
            return true;
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.toString());
            return false;
        } finally {
            c.fechaConexao();
        }


    }

    public Pessoa findPessoa(int codigo) {
        Conecta c = new Conecta();
        ResultSet rs;
        String sql = "SELECT NOME FROM IMC.PESSOA WHERE CODIGO = " + String.valueOf(codigo);
        try {
            rs = c.getStm().executeQuery(sql);
            rs.next();
            return new Pessoa(codigo, rs.getString(1));
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.toString());
            return null;
        } finally {
            c.fechaConexao();
        }

    }

    public boolean updatePessoa(Pessoa p) {
        Conecta c = new Conecta();
        String sql = "UPDATE IMC.PESSOA SET NOME = '" + p.getNome() + "' WHERE IMC.CODIGO = " + String.valueOf(p.getCodigo());
        try {
            c.getStm().execute(sql);
            return true;
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.toString());
            return false;
        } finally {
            c.fechaConexao();
        }
    }

    public List<Imc> selectAcompanhamentos(int codigo) {
        Conecta c = new Conecta();
        ResultSet rs;
        List l = new ArrayList();

        String sql = "SELECT DATA, PESO, ALTURA FROM IMC.IMC WHERE CODIGO_PESSOA = "
                + String.valueOf(codigo);
        try {
            rs = c.getStm().executeQuery(sql);
            while (rs.next()) {
                Date data = rs.getDate(1);
                float altura = rs.getFloat(3);
                float peso = rs.getFloat(2);
                Imc imc = new Imc(data, altura, peso);
                l.add(imc);
            }
            return l;
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.toString());
            return null;
        } finally {
            c.fechaConexao();
        }
    }
  public List<Pessoa> selectPessoas() {
        List grosa = new ArrayList();
        Conecta c = new Conecta();
        String sql = "SELECT CODIGO, NOME FROM PESSOA";
        try {
            ResultSet rs = c.getStm().executeQuery(sql);
            while (rs.next()) {
                int codigo = rs.getInt(1);
                String nome = rs.getString(2);
                Pessoa p = new Pessoa(codigo, nome);
                grosa.add(p);
            }
            return grosa;
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.toString());
            return null;
        } finally {
            c.fechaConexao();
        }


    }
}

